/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.upn.sigemfi.gar.beans;

import edu.upn.sigemfi.gar.bc.PersonaNaturalDelegate;
import edu.upn.sigemfi.seg.be.EstadoCivil;
import edu.upn.sigemfi.seg.be.PersonaNatural;
import edu.upn.sigemfi.seg.be.Sexo;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;

/**
 *
 * @author Administrador
 */
public class PersonaNaturalController extends AbstractController {

    private PersonaNatural personaNatural;
    private PersonaNaturalDelegate delegado;
    private String criterioDNI;

    public PersonaNaturalController() {
        delegado = new PersonaNaturalDelegate();
    }

    public String buscarClienteA(){
        setCriterioDNI("");
        return "buscarClienteA";
    }

    public String buscarClienteHip(){
        setCriterioDNI("");
        return "buscar";
    }

    public String buscarClientePig(){
        setCriterioDNI("");
        return "buscar";
    }

    public String buscarClienteWar(){
        setCriterioDNI("");
        return "buscar";
    }

    public String buscarClientePre(){
        setCriterioDNI("");
        return "buscar";
    }

    public String buscarPropietarioPre(){
        setCriterioDNI("");
        return "buscar";
    }

    public String buscarAval(){
        setCriterioDNI("");
        return "buscarAval";
    }

    public String getCriterioDNI() {
        return criterioDNI;
    }

    public void setCriterioDNI(String criterioDNI) {
        this.criterioDNI = criterioDNI;
    }

    public List<PersonaNatural> getPersonasNaturales() {
        try{
                if(criterioDNI == null || criterioDNI.isEmpty() )
                {
                    return delegado.listar();
                }
                else
                {
                   PersonaNatural p = delegado.buscarPorDNI(criterioDNI);
                   if (p != null)
                   {
                           List<PersonaNatural> lista = new ArrayList<PersonaNatural>();
                           lista.add(p);
                           return lista;
                   }
                }
        } catch (Exception e) {
            
        }
        return null;
    }

    public String nuevo() {
        personaNatural = new PersonaNatural();
        return "nuevo";
    }

    public String volver() {
        personaNatural = null;
        return "volver";
    }

    public String registrar() {
        try {
            delegado.crear(personaNatural);
            info("La Persona Natural se registró correctamente");
        } catch (Exception e) {
            error(e.getMessage());
        }
        return "volver";
    }

    public String actualizar() {
        try {
            delegado.editar(personaNatural);
            info("La Persona Natural se actualizó correctamente");
        } catch (Exception e) {
            error(e.getMessage());
        }
        return "volver";
    }

    public String eliminar() {
        try {
            delegado.eliminar(personaNatural);
            info("La Persona Natural se eliminó correctamente");
        } catch (Exception e) {
            error(e.getMessage());
        }
        return "volver";
    }

    public PersonaNatural buscar(Long codigo) {
        try {
            return delegado.buscar(codigo);
        } catch (Exception e) {
            error(e.getMessage());
        }
        return null;
    }

    public SelectItem[] getSexos() {
        Sexo[] sexos = Sexo.values();
        SelectItem[] select = new SelectItem[sexos.length];
        int i = 0;
        for (Sexo s : sexos) {
            select[i++] = new SelectItem(s, s.toString());
        }
        return select;
    }

    public SelectItem[] getEstadosCiviles() {
        EstadoCivil[] estados = EstadoCivil.values();
        SelectItem[] select = new SelectItem[estados.length];
        int i = 0;
        for (EstadoCivil ec : estados) {
            select[i++] = new SelectItem(ec, ec.toString());
        }
        return select;
    }

    public PersonaNatural getPersonaNatural() {
        return personaNatural;
    }

    public void setPersonaNatural(PersonaNatural personaNatural) {
        this.personaNatural = personaNatural;
    }
}
